home *** CD-ROM | disk | FTP | other *** search
- HeapChk 0.91 - Test blocks on heap
- ==================================
-
- This is the second (beta-) version of a utility for Delphi.
- Test it and write your comments.
-
- HeapChk does:
- - store every allocation and deallocation of heapmemory.
- - add two extra bytes on the end of each block. This bytes
- contains a testpattern to check for blockoverflow.
- - you can check the heap with the function HeapTestCheckPtrs.
- you get a message for every blockoverflow with the sourcecode
- where the block was allocated.
- - on program-exit you get a file (normaly DUMP.TXT) with a list
- of every non-deallocated block.
-
- How to use it.
- 1. !!! Switch Option/Project/Linker/Mapfile to 'detailed' !!!
- !!! and Option/Project/Compiler/Debuginfos to 'ON' !!!
-
- 2. Insert 'HeapChk' in the uses-statement of the projectfile (*.DPR)
-
- 3. Make a testbutton in a form.
- in testbutton-OnClick write the line
- HeapTestCheckPtrs;
- and in the uses-statement of the Form insert 'HeapTest';
-
- 4. Click the button and the check is done.
-
- There is a Testproject (HEAP.* und HAEPTST.*) for more features.
-
- Unit HEAPCHK
- ============
- you should insert this Unit as the first Unit in the DPR-File
-
- var HeapCheckActive : boolean;
- True, when HeapChk was installed. If this variable is False
- you have probably a wrong Delphi-Version. It patched WMEM.OBJ
- on runtime and checked the code before.
-
- procedure HeapLogOff;
- switch Heap-Logging off. No registration of any allocation or deallocation
-
- procedure HeapLogOn;
- switch Heap-Logging on
-
- !!! New !!!
- procedure HeapTestClear;
- clears the internal list of allocated blocks. This procedure should be
- called in the DPR-File after the 'begin'-statement.
- The result is a cleaner DUMP.TXT because blocks allocated by the RTL
- on startup wouldn't be listed. Look in the example.
-
-
- Unit HEAPTEST
- =============
- you should insert this Unit in your project.
-
- var HeapTestSearchPath : string;
- Searchpath for sourcefiles. HEAPTEST use this path to display the
- source in the HeapTestCheckPtrs-Dialog.
-
- var HeapTestDumpFile : string;
- Name and path of the Dumpfile after programm-execution.
- Default is 'DUMP.TXT';
- When this string is empty, no Dumpfile will be generated.
-
- function HeapTestCheckPtr( var pt : pointer) : integer;
- Test a single pointer.
- Results:
- HEAPCHECK_OKAY = 1 ( block Okay )
- HEAPCHECK_OVERFLOW = 2 ( someone have written to much )
- HEAPCHECK_NOTFOUND = 3 ( block dosn't exist on heap )
-
- function HeapTestCheckPtrs : integer;
- Test all blocks on heap.
- Result:
- HEAPCHECK_OKAY = 1 ( all blocks Okay )
- HEAPCHECK_OVERFLOW = 2 ( one or more blocks overflowed )
- for every pointer a dialog pops up and
- show the callstack at allocation-time
- (when there are debug-infos)
-
- procedure HeapTestShowPtrs; far;
- writes the DUMP.TXT. This procedure will execute automaticly on
- program-exit.
-
- thats all.
- I hope, you understand my english.
-
- this is a betaversion for testing. Use it on your own risk. I haven't decide
- what to do with it. Maybe I put it in public domain, shareware etc, when the
- first golden code is ready.
-
- Version 0.91
- ============
- new features:
- -- procedure HeapTestClear;
- look in the example
-
- -- optimized for speed (much!)
-
- -- version 0.90 needs a component 'BorderPanel' that was not included.
- This referenz is removed.
-
- -- some minor bugfixes
-
- shareware-version
- =================
- I'm currently work on a sharewareversion with more features. Look at the
- example and the dumpfile 'SHAREWAR.DMP' for features implemented yet.
-
- features of the sharewareversion:
- -- Log all overflows in the DUMP-File. The trial-version checks only blocks
- that exist at check-time, and ignors blocks, that was deallocated
- before the check. This blocks will be listed in the DUMP-File.
-
- -- Shows the maximum of stack, local heap and heapmemory.
-
- -- utility to view the dumpfile with sourcecode.
-
- -- utility to configure the heaptest. You can exclude units (eg classes)
- in the stack-trace.
-
- -- the sharewareverison will include the BorderPanel-componentas a free gift.
- this component is a panel with inner and outer borders. (put a memofield
- with no border in a panel, set the align of the memo to alClient, and you
- see the reason for such a component)
-
- -- more features will be included.
-
- If you are interested in the shareware-version, please contact me.
-
-
-
- write comments to
- Frank Mertsch - Roger Nelke
- CS-ID 100024, 2711
-
-
- Happy bugging
- roger
-
-
-
-
-
-
-
-